const express = require('express')
const app = express()
app.listen(9527)

// 导入路由模块
const frontRouter = require('./router/front/index.js')
const adminRouter = require('./router/admin/index.js')

// 导入记录日志的中间件
const writeLog = require('./middleware/writeLog')
// 导入写错误日志的工具库
const writeErr = require('./utils/writeErr')
// 导入body-parser
const bodyParser = require('body-parser')

// 导入xy函数
const xy = require('./utils/xy')

// 日志记录中间件 - 应用级别全局中间件
app.use(writeLog) //会经过后面的请求都会先经过这个中间件
// 获取post数据 - 应用级别全局中间件
app.use(bodyParser.urlencoded({ extended: false }))

// 调试使用 - 为了报错
// app.get('/', (req,resp) => {
//     let a  
//     console.log(a.haha);
// })

// 前台操作 - 跟用户相关的
app.use('/front', frontRouter)
// 后台操作 - 管理员操作的
app.use('/admin', adminRouter)

// 异常处理中间件
app.use((err, req, resp, next) => {
    // 如果有错误将错误 记录在日志中
    // 读取日志文件 - 将最后的ok替换成err错误信息
    console.log(err);
    writeErr(err)
    // 自定义响应错误信息
    // resp.json({
    //     error_code: 500,
    //     msg: '系统繁忙，稍后再试！'
    // })
    xy(resp, 500, '系统繁忙，稍后再试！')
})

// 404中间件
app.use((req, resp, next) => {
    writeErr(404)
    // 自定义响应404信息
    // resp.json({
    //     error_code: 404,
    //     msg: '请求路径错误！'
    // })
    xy(resp, 404, '请求路径错误！')
})
